跳到主要内容

开源框架中的反射工具

在很多开源框架中都用到了反射,因此这些框架中都包含了很多的反射工具类,我们可以很方便的直接只用这些工具类,而不用自己再去重新定义。下面介绍几个常用框架中包含的反射工具类。

  • org.springframework:spring-core
  • org.apache.commons:commons-lang3
  • cn.hutool:hutool-all

下面列举一些反射工具类,但是不介绍其具体方法的使用。

Spring-Core

org.springframework.beans.BeanUtils 其实是一个反射与内省(Introspector)结合的工具类。内部提供了实例拷贝、获取方法、字段等功能。

提示

如果你看过这些工具类的源码,就会发现这些类都被定义为了抽象类(abstract class)。之所以这样做是为了保证这些工具类在使用的时候不能够被实例化。因为工具类提供的方法都是静态方法,虽然实例化之后也是可以调用的,但是这并不是一种好的写法。

定义为抽象类还有一个问题是,这个类是可以被继承的。一般情况下我们不建议一个工具类继承另一个工具类。这时为了完全杜绝这些问题可以使用下面的方式定义工具类。

public final class XxxxUtils {
private XxxxUtils() {
}
}
java

final 来阻止继承,用私有的构造函数来阻止实例化。

commons-lang3

  • org.apache.commons.lang.reflect.ConstructorUtils
  • org.apache.commons.lang.reflect.FieldUtils
  • org.apache.commons.lang.reflect.MemberUtils
  • org.apache.commons.lang.reflect.MethodUtils

Hutool